#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
主题: 随机选择
问题: 你想从一个序列中随机抽取若干元素，或者想生成几个随机数。
提示 : 
    1. random 模块使用 Mersenne Twister 算法来计算生成随机数, 这是一个确定性算法
"""

import random

random.seed(47)

def recipe1():
    values = [1, 2, 3, 4, 5, 6]
    print(f"{values = }")
    print(f"{random.choice(values) = }")
    print(f"{random.choice(values) = }")
    print(f"{random.choice(values) = }")
    print(f"{random.choice(values) = }")

    # 提取出N个不同元素的样本
    print(f"{random.sample(values, 2) = }")
    print(f"{random.sample(values, 2) = }")
    print(f"{random.sample(values, 3) = }")

    # 打乱序列中元素的顺序
    random.shuffle(values)
    print(f"{values = }")
    random.shuffle(values)
    print(f"{values = }") 

    # 生成随机整数
    print(f"{random.randint(0, 10) = }")
    print(f"{random.randint(0, 10) = }")  
    print(f"{random.randint(0, 10) = }")  

    # 生成0到1范围内均匀分布的浮点数
    print(f"{random.random() = }")  
    print(f"{random.random() = }")  
    print(f"{random.random() = }")  
    print(f"{random.random() = }")  

    # 获取N位随机位(二进制)的整数
    print(f"{random.getrandbits(200) = }")

def main():
    print('recipe1'.center(20, '*'))
    recipe1()


if __name__ == '__main__':
    main()    